分享好友 技术首页 技术分类 切换频道

串口开发的另一种方式

2020-07-19 07:17120

  根据以前的使用过的一系列串口操作软件发现,大多数的串口操作软件不具备自动的记录保存功能,记录文件是在应用程序目录下 以时间命名的文本文件。现在发布的这个程序还有一些功能没有实现不过这不影响使用。如果有需要大家可以自行添加代码。下面主要说明一下程序的核心类CSuperSerialPort。该类主要功能有:

控制串口收发数据并利用window系统的消息来转发接收到的数据;
支持一个CSuperSerialPort对象向多个窗口发送数据;
支持发送大块数据;
支持动态设置收发缓存区大小;
支持利用外部线程进行文件传输;
支持收发数据统计;
支持自定义错误信息;
该类还有两个辅助的结构体 WIN_ARG 和 tagPackage。WIN_ARG 是窗体描述结构体,该结构体包含了窗体指针、自定义消息和位置ID。


typedef struct WIN_ARG
{
     UINT  winId;
     CWnd* pWin;
     DWORD msg;
}WINARG, *pWINARG;

tagPackage 是数据包描述结构体,该结构体包含了数据长度、数据类别和数据值。CSuperSerialPort利用这个结构体来分解大块数据然后发送。
typedef struct tagPackage
{
     enum emMaxSize
     { emMAX_SIZE = 1024 };
 
     UINT iLen;
     UINT iType;
     BYTE pData[emMAX_SIZE];
}PACKAGE, * pPACKAGE;

  在串口程序的开发过程中,zui麻烦的问题就是需要事先确定缓存区的大小。如果传输时按协议传输这个一般没什么问题,但是如果按一个字节一个字节的进行传输,那么在收数据的时候就很麻烦。解决这一问题时我利用了串口中cbInQue这一属性,同时为了提高程序的性能启用了一个接收线程,并将收下来的数据都发往指定的窗体对象然后再进行处理。如:
pPACKAGE pPack = new PACKAGE;
DWORD rdLen = pCom->m_comState.cbInQue;
pPack->iLen   = rdLen;

为了协同串口的收发,在初始化串口的时候要启用FILE_FLAG_OVERLAPPED这一属性,如
CreateFile(, GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
  当然在接收的线程中还加入了互斥对象和临界区用于控制线程和数据统计。如果你直接使用CSuperSerialPort类,程序已经替你完成了这些任务。如:
m_pSSP->Open(m_comName, m_uComRate, m_uComParity, m_uComDataBits, m_fComStopBits);
m_pSSP->StartReceive(m_pSSP)

详细情况可以参照TestSerialPort2Dlg.cpp中的代码。

  为了解决一个串口实例向多个窗口显示数据问题,我在CSuperSerialPort类中添加了一个窗体向量表typedef vector vWINLIST;你可以通过Attach和Detach函数来控制窗体数量。如果需要添加其他的功能到CSuperSerialPort类中,有三种方法可以实现:
直接修改CSuperSerialPort类代码;
继承CSuperSerialPort类;
调用GetComHandle返回串口句柄;






<<利用串口“实时”接收短消息的方法


<<串口服务器的工作方式和应用

免责声明:矿库网文章内容来源于网络,为了传递信息,我们转载部分内容,尊重原作者的版权。所有转载文章仅用于学习和交流之目的,并非商业用途。如有侵权,请及时联系我们删除。感谢您的理解与支持。

点赞 0
举报
收藏 0
评论 0
分享 0
覆盖2700家,中国环保公益组织数据库上线
由北京市企业家环保基金会(SEE 基金会)、万科公益基金会、明善道(北京)管理顾问有限公司三方发起共建的中国环保公益组织数据库正式上线。数据库收录了2022年“中国环保公益组织现状调研”覆盖的约2700家环保公益组织的相关信息,如组织信息(包括组织名称、组织类型、成立日期、工作领域首选项、工作领域次选议题、工作手法、联系方式等)、数据信息等。参与首年调研执行的34家枢纽组织将成为数据维护员,共同建设、管理、维护这一环保公益行业基础设施。

0评论2023-07-04512

5月5日LME市场:期铜上涨,美国强劲就业数据擦亮短期经济前景
外电5月5日消息,伦敦金属交易所(LME)期铜价格周五上涨,此前强劲的美国就业数据照亮近期经济前景,但涨幅仅抵消部分本周早些时候因中国需求不振和库存增加而遭受的损失。  伦敦时间5月5日17:00(京时间5月6日00:00),LME三个月期铜上涨88美元,或1.04%,收报每吨8,581.5美元,但本周仍下跌约0.2%。  就业数据帮助刺激了

0评论2023-05-06295

自然资源部地质矿产科学数据中心成立
自然资源部地质矿产科学数据中心近日在中国地质调查局发展研究中心(全国地质资料馆、自然资源部矿产勘查技术指导中心)正式成立。为进一步加强和规范自然资源科学数据管理,促进开放共享,自然资源部在自然资源领域推动建设一批科学数据中心,建立自然资源部科学数据管理运行机制。建设自然资源部地质矿产科学数据中心,对

0评论2023-04-283213

COMEX期铜下跌,因通胀担忧,中国制造业数据低于预期
纽约4月3日消息,周一芝加哥商品交易所(COMEX)的铜期货下跌。截至收盘,期铜下跌4.45美分到4.9美分不等,其中成交最活跃的2023年5月期铜报收4.0455美元/磅,比上一交易日下跌4.90美分或1.20%。5月期铜的交易区间为4.0345美元到4.0975美元。周一中国公布的3月份的财新标普制造业采购经理人指数(PMI)跌至50.0,低于2月份

0评论2023-04-04992

2023年1-2月中国不锈钢进出口数据简析
2023年1月,国内不锈钢进口量约15.04万吨,环比减少36.5%;同比减少60.8%。2月进口量约18.73万吨,环比增加24.51%;同比减少41.72%。

0评论2023-03-211563

矿山大数据标准化白皮书发布
3月9日,在2023全国大数据标准化工作会议暨全国信标委大数据标准工作组第九次全会上,全国信息技术标准化技术委员会大数据标准工作组发布了《矿山大数据标准化白皮书(2023年版)》。

0评论2023-03-141494

伦铜和其他基本金属下跌 因进口数据疲弱
SHMET 网讯:  外电3月7日消息,伦铜周二进一步下跌,因主要金属消费国中国进口数据疲软以及秘鲁主要矿山可能恢复供应。  伦敦金属交易所(LME)三个月期铜下跌0.76%,至每吨8,851.0美元。  盛宝银行大宗商品策略主管Ole Hansen表示:“铜价走低,因中国进口疲软,秘鲁紧张局势缓解,表明出口复苏。”  用于电力、建

0评论2023-03-08120

用电数据显示,秘鲁铜矿正全面恢复生产
外电3月3日消息,根据用电数据进行分析,秘鲁关键铜矿恢复生产,此前抗议和封锁打击产量,可能会提振这一全球第二大铜生产国的供应。

0评论2023-03-06239